package web.sso.model;

import reactor.core.publisher.Flux;

import java.util.Arrays;

/**
 * DATE: 2020/1/28
 * TIME: 3:31 下午
 * AUTHOR: hlm
 *
 * 实体类的Flux扩展接口
 */
public interface FluxExten<T> {

    /**
     * 将此对象转化为Flux包装的生产者
     * @return
     */
    default Flux<T> toFlux() {
        return Flux.just((T) this);
    }

    /**
     * 将此对象连同参数一同转换为Flux包装的生产者
     * @param data
     * @return
     */
    default Flux<T> toFlux(T... data) {
        return Flux.create(sink -> {
            sink.next((T) this);
            Arrays.stream(data).forEach(sink::next);
            sink.complete();
        });
    }
}
